package org.zk.dubbo_provider.service.impl;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.RequestMapping;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.zk.dubbo_provider.dao.UserMapper;

import org.zk.entity.User;
import org.zk.service.UserService;
import com.alibaba.dubbo.config.annotation.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Alicelonely
 * @since 2019-12-11
 */
@Service(timeout = 10000)
public class UserServiceImpl implements UserService {


    @Resource
    private UserMapper userMapper;


    /**
     * 用户手机号密码登录（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public User getUserLogin(User user) {
        return userMapper.getUserLogin(user);
    }


    /**
     * 用户邮箱密码登录（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public User getUserLoginByEmail(User user) {
        return userMapper.getUserLoginByEmail(user);
    }

    /**
     * 用户手机号密码注册（高顺）
     *
     * @param user
     * @return
     */

    @Override
    public int insertUserByEmail(User user) {
        return userMapper.insertUserByEmail(user);
    }

    /**
     * 用户邮箱密码注册（高顺）
     *
     * @param user
     * @return
     */

    @Override
    public int insertUserByPhone(User user) {
        return userMapper.insertUserByPhone(user);
    }

    /**
     * 忘记密码时检查数据库有没有数据（手机号）（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public User selectForGetByPhone(User user) {
        return userMapper.selectForGetByPhone(user);
    }

    /**
     * 忘记密码时检查数据库有没有数据( 邮箱)（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public User selectForGetByEmail(User user) {
        return userMapper.selectForGetByEmail(user);
    }

    /**
     * 手机号修改密码（忘记密码）（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public int updatePwdByPhone(User user) {
        return userMapper.updatePwdByPhone(user);
    }

    /**
     * 邮箱修改密码（忘记密码）（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public int updatePwdByEmail(User user) {
        return userMapper.updatePwdByEmail(user);
    }

    /**
     * 用户列表展示，分页处理
     * @param map
     * @return
     */
    @Override
    public PageInfo getlookAllUserPage(Map<String, Object> map) {

        PageInfo page=new PageInfo();
        int count=getCountUser(map);
        page.setTotal(count);
        int pageSize = (int) map.get("pageSize");
        page.setPageSize(pageSize);
        int currPage = (int) map.get("pageNum");
        page.setPageNum(currPage);
        //总页数
        page.setPages((count % pageSize > 0)?(count / pageSize + 1):(count / pageSize));

        //分页
        PageHelper.startPage(currPage,pageSize);
        List<User> ls= userMapper.lookAllUser(map);
        page.setList(ls);
        return page;
    }

    //统计条件查询的数据条数
    @Override
    public int getCountUser(Map<String,Object> map) {
        return userMapper.getCountUser(map);
    }

    //添加用户操作
    //1.验证手机号是否已经存在
    public int checkPhone(String userPhone){
        return userMapper.checkPhone(userPhone);
    }
    //2.添加
    @Override
    public void insertUserStart(User user) {
        userMapper.startAddUser(user);
    }
    //编辑用户信息
    //1.编辑前的查看
    @Override
    public User getUserInfoById(int userId){
        return userMapper.getUserInfoById(userId);
    }
    //2.编辑用户信息
    public void updateUserEdit(User user){
        userMapper.userEdit(user);
    }
    //删除用户
    public void delUserById(User user){
        userMapper.delUserById(user);
    }
    //禁用用户
    public void updateUserById(User user){
        userMapper.unUserById(user);
    }

    @Override
    public User getAllUser(int id) {
        return userMapper.getAllUser(id);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    @Override
    public int updateUserPic(User user) {
        return userMapper.updatePic(user);
    }


    /**
     * 根据id查对应的所有（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public User selectAllById(User user) {
        return userMapper.selectAllById(user);
    }

    /**
     * 教师审核成功后修改user表状态（高顺）
     *
     * @param user
     * @return
     */
    @Override
    public int updateUserSign(User user) {
        return userMapper.updateUserSign(user);
    }


    /**
     * 根据手机号查（用来检查这个用户是否已经注册）(高顺)
     *
     * @param user
     * @return
     */

    @Override
    public User selectByPhone(User user) {
        return userMapper.selectByPhone(user);
    }

    /**
     * 个人中心修改手机号（高顺）
     * @param user
     */
    @Override
    public void updateUserPhone(User user) {
        userMapper.updatePhone(user);
    }

    /**
     * 根据id查所有
     * @param user
     * @return
     */
    @Override
    public User selectUserAllById(User user) {
        return userMapper.selectAllById(user);
    }

    /**
     * 查询用户
     * @param map
     * @return
     */
    @Override
    public int queryUser(Map map) {
        return userMapper.queryUser(map);
    }


    /**
     * 查询用户信息
     * @param
     * @return
     */


    /**
     * 刘硕  支付成功后，修改用户信息
     * @param
     */




    @Override
    public void updateUserViptime(Integer userId) {

        userMapper.updateViptime(userId);
    }

    /**
     * vip续费（刘硕）
     * @param userId
     */
    @Override
    public void updateUserxufei(Integer userId) {
        userMapper.updatexufei(userId);
    }

    /**
     * vip到期修改用户状态(刘硕)
     * @param userId
     */

    @Override
    public void updateUserVip(Integer userId) {
        userMapper.updateUserVip(userId);
    }

    @Override
    public int updateUserState(Integer userId) {
        return userMapper.updateState(userId);
    }

    @Override
    public int updateUserQiYong(Integer userId) {
        return userMapper.updateQiYong(userId);
    }


    @Override
    public PageInfo getVipUser(Map<String, Object> map) {
        PageInfo page=new PageInfo();
        int count=userMapper.queryVipCount(map);
        page.setTotal(count);
        int pageSize = Integer.parseInt(String.valueOf(map.get("pageSize")));
        page.setPageSize(pageSize);
        int currPage = Integer.parseInt(String.valueOf(map.get("pageNum")));
        page.setPageNum(currPage);

        //计算总页数
        int a ;
        if (count % pageSize > 0) {
            a = count / pageSize + 1;
        } else {
            a = count / pageSize;
        }
        page.setPages(a);

        //开始分页
        PageHelper.startPage(currPage,pageSize);
        List<User>users=userMapper.getAllVip(map);
        page.setList(users);
        return page;
    }

    @Override
    public User queryUsers(User user) {
        return userMapper.queryUsers(user);
    }


}
